<!-- HTML header for doxygen 1.8.6-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/xhtml;charset=utf-8" http-equiv="Content-Type"/>
<meta content="IE=9" http-equiv="X-UA-Compatible"/>
<meta content="Doxygen 1.8.13" name="generator"/>
<title>OpenCV: Structured Light API</title>
<link href="../../opencv.ico" rel="shortcut icon" type="image/x-icon"/>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script src="../../jquery.js" type="text/javascript"></script>
<script src="../../dynsections.js" type="text/javascript"></script>
<script src="../../tutorial-utils.js" type="text/javascript"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script src="../../search/searchdata.js" type="text/javascript"></script>
<script src="../../search/search.js" type="text/javascript"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
//<![CDATA[
MathJax.Hub.Config(
{
  TeX: {
      Macros: {
          matTT: [ "\\[ \\left|\\begin{array}{ccc} #1 & #2 & #3\\\\ #4 & #5 & #6\\\\ #7 & #8 & #9 \\end{array}\\right| \\]", 9],
          fork: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ \\end{array} \\right.", 4],
          forkthree: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ #5 & \\mbox{#6}\\\\ \\end{array} \\right.", 6],
          forkfour: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ #5 & \\mbox{#6}\\\\ #7 & \\mbox{#8}\\\\ \\end{array} \\right.", 8],
          vecthree: ["\\begin{bmatrix} #1\\\\ #2\\\\ #3 \\end{bmatrix}", 3],
          vecthreethree: ["\\begin{bmatrix} #1 & #2 & #3\\\\ #4 & #5 & #6\\\\ #7 & #8 & #9 \\end{bmatrix}", 9],
          cameramatrix: ["#1 = \\begin{bmatrix} f_x & 0 & c_x\\\\ 0 & f_y & c_y\\\\ 0 & 0 & 1 \\end{bmatrix}", 1],
          distcoeffs: ["(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \\tau_x, \\tau_y]]]]) \\text{ of 4, 5, 8, 12 or 14 elements}"],
          distcoeffsfisheye: ["(k_1, k_2, k_3, k_4)"],
          hdotsfor: ["\\dots", 1],
          mathbbm: ["\\mathbb{#1}", 1],
          bordermatrix: ["\\matrix{#1}", 1]
      }
  }
}
);
//]]>
</script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js" type="text/javascript"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css"/>
<link href="../../stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<!--#include virtual="/google-search.html"-->
<table cellpadding="0" cellspacing="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="../../opencv-logo-small.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">OpenCV
    <span id="projectnumber">4.5.2</span>
   </div>
   <div id="projectbrief">Open Source Computer Vision</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<script src="../../menudata.js" type="text/javascript"></script>
<script src="../../menu.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
  initMenu('../../',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow" onkeydown="return searchBox.OnSearchSelectKey(event)" onmouseout="return searchBox.OnSearchSelectHide()" onmouseover="return searchBox.OnSearchSelectShow()">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe frameborder="0" id="MSearchResults" name="MSearchResults" src="javascript:void(0)">
</iframe>
</div>
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> |
<a href="#enum-members">Enumerations</a>  </div>
  <div class="headertitle">
<div class="title">Structured Light API</div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dec/classcv_1_1structured__light_1_1GrayCodePattern.html">cv::structured_light::GrayCodePattern</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Class implementing the Gray-code pattern, based on <a class="el" href="../../d0/de3/citelist.html#CITEREF_UNDERWORLD">[109]</a>.  <a href="../../d1/dec/classcv_1_1structured__light_1_1GrayCodePattern.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d96/classcv_1_1structured__light_1_1SinusoidalPattern.html">cv::structured_light::SinusoidalPattern</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Class implementing Fourier transform profilometry (FTP) , phase-shifting profilometry (PSP) and Fourier-assisted phase-shifting profilometry (FAPS) based on <a class="el" href="../../d0/de3/citelist.html#CITEREF_faps">[49]</a>.  <a href="../../d6/d96/classcv_1_1structured__light_1_1SinusoidalPattern.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/dbb/classcv_1_1structured__light_1_1StructuredLightPattern.html">cv::structured_light::StructuredLightPattern</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Abstract base class for generating and decoding structured light patterns.  <a href="../../d9/dbb/classcv_1_1structured__light_1_1StructuredLightPattern.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga8c656fa76189bd6dc1b2a444f680b60a"><td align="right" class="memItemLeft" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <br/>
  <a class="el" href="../../d1/d90/group__structured__light.html#gga8c656fa76189bd6dc1b2a444f680b60aa4652f36554cab9ec596798cdb98aa1c7">cv::structured_light::FTP</a> = 0, 
<br/>
  <a class="el" href="../../d1/d90/group__structured__light.html#gga8c656fa76189bd6dc1b2a444f680b60aa1642d3774551cc6161f49359cc4dd3af">cv::structured_light::PSP</a> = 1, 
<br/>
  <a class="el" href="../../d1/d90/group__structured__light.html#gga8c656fa76189bd6dc1b2a444f680b60aa7f8cbabe23690dec5c877978aa57be7c">cv::structured_light::FAPS</a> = 2
<br/>
 }<tr class="memdesc:ga8c656fa76189bd6dc1b2a444f680b60a"><td class="mdescLeft"> </td><td class="mdescRight">Type of sinusoidal pattern profilometry methods.  <a href="../../d1/d90/group__structured__light.html#ga8c656fa76189bd6dc1b2a444f680b60a">More...</a><br/></td></tr>
</td></tr>
<tr class="separator:ga8c656fa76189bd6dc1b2a444f680b60a"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gafaa062a39adfeb3836b8730fda1a6b89"><td align="right" class="memItemLeft" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <a class="el" href="../../d1/d90/group__structured__light.html#ggafaa062a39adfeb3836b8730fda1a6b89a98f0a8c890dded38d226722bcdd5795c">cv::structured_light::DECODE_3D_UNDERWORLD</a> = 0
 }<tr class="memdesc:gafaa062a39adfeb3836b8730fda1a6b89"><td class="mdescLeft"> </td><td class="mdescRight">Type of the decoding algorithm.  <a href="../../d1/d90/group__structured__light.html#gafaa062a39adfeb3836b8730fda1a6b89">More...</a><br/></td></tr>
</td></tr>
<tr class="separator:gafaa062a39adfeb3836b8730fda1a6b89"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a id="details" name="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>Structured light is considered one of the most effective techniques to acquire 3D models. This technique is based on projecting a light pattern and capturing the illuminated scene from one or more points of view. Since the pattern is coded, correspondences between image points and points of the projected pattern can be quickly found and 3D information easily retrieved.</p>
<p>One of the most commonly exploited coding strategies is based on trmatime-multiplexing. In this case, a set of patterns are successively projected onto the measuring surface. The codeword for a given pixel is usually formed by the sequence of illuminance values for that pixel across the projected patterns. Thus, the codification is called temporal because the bits of the codewords are multiplexed in time <a class="el" href="../../d0/de3/citelist.html#CITEREF_pattern">[211]</a> .</p>
<p>In this module a time-multiplexing coding strategy based on Gray encoding is implemented following the (stereo) approach described in 3DUNDERWORLD algorithm <a class="el" href="../../d0/de3/citelist.html#CITEREF_UNDERWORLD">[109]</a> . For more details, see <a class="el" href="../../d3/d81/tutorial_structured_light.html">Structured Light tutorials</a>. </p>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="ga8c656fa76189bd6dc1b2a444f680b60a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8c656fa76189bd6dc1b2a444f680b60a">◆ </a></span>anonymous enum</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">anonymous enum</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d5/de0/sinusoidalpattern_8hpp.html">opencv2/structured_light/sinusoidalpattern.hpp</a>&gt;</code></p>
<p>Type of sinusoidal pattern profilometry methods. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga8c656fa76189bd6dc1b2a444f680b60aa4652f36554cab9ec596798cdb98aa1c7"></a>FTP <div class="python_language">Python: cv.structured_light.FTP</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="gga8c656fa76189bd6dc1b2a444f680b60aa1642d3774551cc6161f49359cc4dd3af"></a>PSP <div class="python_language">Python: cv.structured_light.PSP</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="gga8c656fa76189bd6dc1b2a444f680b60aa7f8cbabe23690dec5c877978aa57be7c"></a>FAPS <div class="python_language">Python: cv.structured_light.FAPS</div></td><td class="fielddoc"></td></tr>
</table>
</div>
</div>
<a id="gafaa062a39adfeb3836b8730fda1a6b89"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafaa062a39adfeb3836b8730fda1a6b89">◆ </a></span>anonymous enum</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">anonymous enum</td>
        </tr>
      </table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../df/d33/structured__light_2structured__light_8hpp.html">opencv2/structured_light/structured_light.hpp</a>&gt;</code></p>
<p>Type of the decoding algorithm. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ggafaa062a39adfeb3836b8730fda1a6b89a98f0a8c890dded38d226722bcdd5795c"></a>DECODE_3D_UNDERWORLD <div class="python_language">Python: cv.structured_light.DECODE_3D_UNDERWORLD</div></td><td class="fielddoc"><p>Kyriakos Herakleous, Charalambos Poullis. "3DUNDERWORLD-SLS: An Open-Source Structured-Light Scanning System for Rapid Geometry Acquisition", arXiv preprint arXiv:1406.6595 (2014). </p>
</td></tr>
</table>
</div>
</div>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.8.6-->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Apr 2 2021 11:36:41 for OpenCV by  <a href="http://www.doxygen.org/index.html">
<img alt="doxygen" class="footer" src="../../doxygen.png"/>
</a> 1.8.13
</small></address>
<script type="text/javascript">
//<![CDATA[
addTutorialsButtons();
//]]>
</script>
</body>
</html>
